/*
 author: jianjian
 info: 验证表单的函数
*/

// 导出验证用户名的函数
const unameExg = /^[a-zA-Z0-9_-]{4,8}$/
export var checkUName = (rule, value, callback) => {
  // 字符串去掉前后空格  trim()
  if (!value) {
    return callback(new Error('用户名不能为空'))
    //test() 方法用于检测一个字符串是否匹配某个模式.
    //如果字符串 string 中含有与 RegExpObject 匹配的文本，则返回 true，否则返回 false。
  } else if (!unameExg.test(value)) {
    return callback(new Error('用户名只能是4-8位,并且以字母数字下划线开头'))
  } else {
    callback()
  }
} //至少8-16个字符，至少1个大写字母，1个小写字母和1个数字，其他可以是任意字符：
// 导出验证密码的函数
const pwdExg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/
export var validatePass = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请输入密码'))
  } else if (!pwdExg.test(value)) {
    return callback(
      new Error(
        '密码只能是至少8-16个字符，至少1个大写字母，1个小写字母和1个数字，其他可以是任意字符'
      )
    )
  } else {
    callback()
  }
}

// 导出验证新密码的函数
export function checkPass1(o, str) {
  return function(rule, value, callback) {
    if (value === '') {
      callback(new Error('请输入密码'))
    } else if (!pwdExg.test(value)) {
      callback(
        new Error(
          '密码只能是至少8-16个字符，至少1个大写字母，1个小写字母和1个数字，其他可以是任意字符'
        )
      )
    } else {
      //这里代表新密码验证是通过的
      if (o.ruleForm[str] !== '') {
        o.$refs.ruleForm.validateField(str)
      }
      callback()
    }
  }
}
//导出验证两次密码一致的函数
export function checkPass2(o, str) {
  return (rule, value, callback) => {
    if (value === '') {
      callback(new Error('请再次输入密码'))
    } else if (value !== o.ruleForm[str]) {
      callback(new Error('两次输入密码不一致!'))
    } else {
      callback()
    }
  }
}
